#ifndef GROUPLISTPAGE_H
#define GROUPLISTPAGE_H

#include <QWidget>
#include <QListWidget>
#include <QPushButton>

namespace Ui {
class GroupListPage;
}

/**
 * @brief 群聊列表页面类，展示和管理群聊列表
 */
class GroupListPage : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数，初始化群聊列表页面
     * @param parent 父窗口指针
     */
    explicit GroupListPage(QWidget *parent = nullptr);

    /**
     * @brief 析构函数，释放资源
     */
    ~GroupListPage();

    /**
     * @brief 加载群聊列表数据
     * @param myGroups 我创建的群聊
     * @param joinedGroups 我加入的群聊
     */
    void loadGroupList(const QList<QPair<QString, QString>> &myGroups,
                       const QList<QPair<QString, QString>> &joinedGroups);

signals:
    /**
     * @brief 返回好友列表页面信号
     */
    void backToFriendList();

    /**
     * @brief 跳转创建群聊页面信号
     */
    void toCreateGroupPage();

    /**
     * @brief 跳转加入群聊页面信号
     */
    void toJoinGroupPage();

    /**
     * @brief 跳转群聊详情页面信号
     * @param groupId 群聊ID
     */
    void toGroupDetailPage(const QString &groupId);

private slots:
    /**
     * @brief 创建群聊按钮点击事件处理
     */
    void onCreateGroupClicked();

    /**
     * @brief 加入群聊按钮点击事件处理
     */
    void onJoinGroupClicked();

    /**
     * @brief 群聊列表项点击事件处理
     */
    void onGroupItemClicked();

    /**
     * @brief 返回按钮点击事件处理
     */
    void onBackClicked();

private:
    Ui::GroupListPage *ui;            ///< UI对象指针
    QListWidget *m_myGroupList;       ///< 我创建的群聊列表
    QListWidget *m_joinedGroupList;   ///< 我加入的群聊列表
    QPushButton *m_createBtn;         ///< 创建群聊按钮
    QPushButton *m_joinBtn;           ///< 加入群聊按钮
    QPushButton *m_backBtn;           ///< 返回按钮

    /**
     * @brief 初始化UI组件
     */
    void initUI();
};

#endif // GROUPLISTPAGE_H

